<?php


class ProprietaireManager {

    public function __construct(Mypdo $db){
        $this->db= $db;
    }

        public function add(Proprietaire $proprietaire){
                $req = $this->db->prepare('INSERT INTO proprietaire (nom_propri, prenom_propri, num_fix_propri, num_port_propri,
                 email_propri, genre_propri, siret_propri, ape_propri,
                  num_ad_propri, voie_ad_propri, cp_ad_propri, ville_ad_propri ) VALUES
                  (:nom_propri, :prenom_propri, :num_fix_propri, :num_port_propri, :email_propri, :genre_propri,
                   :siret_propri, :ape_propri, :num_ad_propri, :voie_ad_propri, :cp_ad_propri, :ville_ad_propri)');
                $req->bindValue(':nom_propri', $proprietaire->getNomPropri(), PDO::PARAM_STR);
                $req->bindValue(':prenom_propri', $proprietaire->getPrenomPropri(), PDO::PARAM_STR);
                $req->bindValue(':num_fix_propri', $proprietaire->getNumFixPropri(), PDO::PARAM_STR);
                $req->bindValue(':num_port_propri', $proprietaire->getNumPortPropri(), PDO::PARAM_STR);
                $req->bindValue(':email_propri', $proprietaire->getEmailPropri(), PDO::PARAM_STR);
                $req->bindValue(':genre_propri', $proprietaire->getGenrePropri(), PDO::PARAM_STR);

                $req->bindValue(':siret_propri', $proprietaire->getSiretPropri(), PDO::PARAM_STR);
                $req->bindValue(':ape_propri', $proprietaire->getApePropri(), PDO::PARAM_STR);

                $req->bindValue(':num_ad_propri', $proprietaire->getAdressePropri()->getNumAdresse(), PDO::PARAM_INT);
                $req->bindValue(':voie_ad_propri', $proprietaire->getAdressePropri()->getVoieAdresse(), PDO::PARAM_STR);
                $req->bindValue(':cp_ad_propri', $proprietaire->getAdressePropri()->getCpAdresse(), PDO::PARAM_STR);

                $req->bindValue(':ville_ad_propri', $proprietaire->getAdressePropri()->getVilleAdresse(), PDO::PARAM_STR);


            $req->execute();

        return $this->db->lastInsertId();

        }


    public function update(Proprietaire $proprietaire){
        $req = $this->db->prepare('UPDATE proprietaire SET nom_propri = :nom_propri, prenom_propri = :prenom_propri, num_fix_propri = :num_fix_propri,
                                      num_port_propri = :num_port_propri, email_propri = :email_propri, genre_propri = :genre_propri,
                   siret_propri = :siret_propri, ape_propri = :ape_propri,
                   num_ad_propri = :num_ad_propri, voie_ad_propri = :voie_ad_propri, cp_ad_propri = :cp_ad_propri, ville_ad_propri = :ville_ad_propri
                   WHERE id_propri = :id_propri');

        $req->bindValue(':id_propri', $proprietaire->getIdPropri(), PDO::PARAM_INT);

        $req->bindValue(':nom_propri', $proprietaire->getNomPropri(), PDO::PARAM_STR);
        $req->bindValue(':prenom_propri', $proprietaire->getPrenomPropri(), PDO::PARAM_STR);
        $req->bindValue(':num_fix_propri', $proprietaire->getNumFixPropri(), PDO::PARAM_STR);
        $req->bindValue(':num_port_propri', $proprietaire->getNumPortPropri(), PDO::PARAM_STR);
        $req->bindValue(':email_propri', $proprietaire->getEmailPropri(), PDO::PARAM_STR);
        $req->bindValue(':genre_propri', $proprietaire->getGenrePropri(), PDO::PARAM_STR);

        $req->bindValue(':siret_propri', $proprietaire->getSiretPropri(), PDO::PARAM_STR);
        $req->bindValue(':ape_propri', $proprietaire->getApePropri(), PDO::PARAM_STR);

        $req->bindValue(':num_ad_propri', $proprietaire->getAdressePropri()->getNumAdresse(), PDO::PARAM_INT);
        $req->bindValue(':voie_ad_propri', $proprietaire->getAdressePropri()->getVoieAdresse(), PDO::PARAM_STR);
        $req->bindValue(':cp_ad_propri', $proprietaire->getAdressePropri()->getCpAdresse(), PDO::PARAM_STR);

        $req->bindValue(':ville_ad_propri', $proprietaire->getAdressePropri()->getVilleAdresse(), PDO::PARAM_STR);


        $req->execute();
var_dump($proprietaire->getNumFixPropri());


    }

    public function getList(){
        $listeProprietaires = array();
        $sql = 'SELECT id_propri, nom_propri, prenom_propri, num_fix_propri, num_port_propri, email_propri, genre_propri, siret_propri, ape_propri FROM proprietaire ORDER BY id_propri DESC';
        $req = $this->db->query($sql);
        while ($proprietaire = $req->fetch(PDO::FETCH_OBJ)){
            $listeProprietaires[] = new Proprietaire($proprietaire);
        }
        $req->closeCursor();
        return $listeProprietaires;

    }
    public function getPropri($id_propri){
        $sql = 'SELECT * FROM immoloc.proprietaire WHERE id_propri = :id_propri';
        $req = $this->db->prepare($sql);
        $req->bindValue(':id_propri', $id_propri, PDO::PARAM_INT);
        $req->execute();
        $liste = $req->fetch(PDO::FETCH_ASSOC);
        $propri = new Proprietaire($liste);
        $propri->setAdressePropri(new Adresse($liste));
        return $propri;
    }

    public function getNbPropri(){
        $listeProprietaires = $this->getList();
        $nbPropri = 0;
        foreach($listeProprietaires as $proprietaire){
            $nbPropri++;
        }
        return $nbPropri;
    }




    public function delPropri($id_propri)
    {
        $sql = 'DELETE FROM immoloc.proprietaire WHERE id_propri = :id_propri';
        $req = $this->db->prepare($sql);
        $req->bindValue(':id_propri', $id_propri, PDO::PARAM_INT);
        $req->execute();
    }

    public function getIdPropriByIdLoc($id_loc)
    {
        $sql = 'SELECT id_propri FROM immeuble i
          INNER JOIN location l ON i.id_immeu = l.id_immeu
          WHERE id_loc = :id_loc';
        $req = $this->db->prepare($sql);
        $req->bindValue(':id_loc', $id_loc, PDO::PARAM_INT);
        $req->execute();
        $res = $req->fetch(PDO::FETCH_ASSOC);
        return $res['id_propri'];

    }
} 